home *** CD-ROM | disk | FTP | other *** search
- RAMDACs
-
- Brooktree:
- Bt476 6-bit DAC.
- Bt478 8-bit DAC.
-
- Sierra "Mark1":
- SC11481 15-bit. 6-bit DAC. Overlay. Only "Tseng" double edge mode.
- SC11486 15-bit. 6-bit DAC. Only "Tseng" double egde mode.
- SC11488 15 bit. 6/8 bit DAC. Overlay. Only "Tseng" double edge mode.
-
- Sierra "Mark2":
- SC11482 15-bit. 6-bit DAC. Overlay.
- SC11483 15-bit. 6-bit DAC.
- SC11484 15-bit. 6/8 bit DAC. Overlay.
-
- Sierra "Mark3":
- SC11485 15/16 bit. 6-bit DAC. Overlay.
- SC11487 15/16 bit. 6-bit DAC.
- SC11489 15/16 bit. 6/8 bit DAC. Overlay.
-
- SC15025 15/16/24 bit.
- SC15026 15/16/24 bit.
-
- AcuMos:
- ADAC1 15/16/24 bit.
-
- AT&T:
- ATT20C492 15/16/24 bit
- ATT20C491 15/16/24 bit.
-
-
- MUSIC:
- MU9C4870 15-bit
-
-
- Diamond:
- SS2410 15/24 bit. Might be the same as the MUSIC. A test program for
- Diamond Stealth ID's it as 'MUSIC', but then they
- probably got the test from Tseng in the first place.
-
- Avance Logic:
- ALG1101 16-bit. Appears to be different from the other HiColor DACs.
-
- ATI:
- ATI68830 15/16/24bit Up to 80 MHz !
- ATI68875 15/16/24bit Up to 135 MHz ! Used in ATI Graphics Ultra + and Pro
-
-
-
- 15-bit modes have 5 bits of each basic color:
- bit 0- 4 blue.
- 5- 9 green.
- 10-14 red.
- The pixel is stored in two bytes in Intel style (little endian).
-
- 16-bit modes have 5 bits of red and blue, and 6 bits of green:
- bits 0- 4 blue.
- 5-10 green.
- 11-15 red.
- The pixel is stored in two bytes in Intel style (little endian).
-
- 24-bit modes have 8 bits of each basic color:
- bits 0- 7 blue.
- 8-15 green
- 16=23 red.
- The pixel is stored in three bytes in Intel style (little endian).
-
-
-
-
- HiColor DACs have a command register at 3C6h:
-
- bit 7 Set in HiColor modes.
-
- 6 Set in 16-bit modes. Clear in 15-bit modes.
- Appear to exist but have no effect in SC11483s.
- (ATT) Set in 16 and 24 bit modes, clear in 15 bit modes.
-
- 5 (Sierra "Mark 2/3")
- If set two pixel clocks are used to latch the two bytes
- needed for each pixel. Low byte is latched first.
- If clear the low byte is latched on the rising edge of the
- pixel clock and the high byte is latched on the falling edge.
- Only some VGA chips (Tseng 4000) can handle this.
- In SC11486 this bit has no effect.
-
-
- 5 (ATT) Set in 15 and 24 bit modes. clear in 16bit modes.
-
-
-
-
-
-
- Forcing HiColor DACs into command mode:
-
- procedure dactocomm; {switches DAC to command register}
- var x:word;
- begin
- x:=inp($3C8); {clear old state}
- x:=inp($3C6);
- x:=inp($3C6);
- x:=inp($3C6); {Read $3C6 4 times.}
- x:=inp($3C6);
- end;
-
- Now reads and writes to $3C6 will access the command register.
- Any access to $3C7-$3C9 will switch back to the PEL mask register.
-
-
- Forcing HiColor DACs into normal bode:
-
- procedure dactopel; {switches DAC back to normal mode}
- var x:word;
- begin
- x:=inp($3C8);
- end;
-
-
-
- function testdac:string;
- var
- x,y,z,v,oldcommreg,oldpelreg:word;
-
- begin
- IF chip=__al2101 then (* Special case -- weird DAC *)
- begin
- dactype:=_dac16;
- testdac:='AVL DAC 16';
- exit;
- end;
- testdac:='Normal';
- dactype:=_dac8;
- dactopel;
- x:=inp($3c6);
- repeat
- y:=x;
- x:=inp($3c6);
- until (x=y);
- z:=x;
- x:=inp($3c8);
- x:=inp($3c6);
- x:=inp($3c6); {Same as DacToComm, but keep last value read}
- x:=inp($3c6);
- x:=inp($3c6);
- y:=8;
- while (x<>$8E) and (y>0) do
- begin
- x:=inp($3c6);
- dec(y);
- end;
- if x=$8e then {Special tests for SS2410 DAC}
- begin
- dactype:=_dacss24;
- testdac:='SS24';
- dactopel; {bavk to PE mode}
- end
- else begin
- dactocomm;
- oldcommreg:=inp($3c6);
- dactopel;
- oldpelreg:=inp($3c6);
- x:=oldcommreg xor 255;
- outp($3c6,x);
- dactocomm;
- v:=inp($3c6);
- if v<>x then
- begin
- dactocomm;
- x:=oldcommreg xor $60;
- outp($3c6,x);
- dactocomm;
- v:=inp($3c6);
- testdac:='Sierra SC11486';
- dactype:=_dac15;
-
- if (x and $e0)=(v and $e0) then
- begin
- x:=inp($3c6);
- dactopel;
- testdac:='Sierra 32k/64k';
- dactype:=_dac15; (* Can't tell the difference *)
-
- if x=inp($3c6) then
- begin
- testdac:='ATT 20c492'; {or ATT20c491}
- dactype:=_dacatt492;
- dactocomm;
- outp($3c6,255);
- dactocomm;
- if inp($3c6)<>255 then
- begin
- testdac:='AcuMos ADAC1'; {I this correct??}
- dactype:=_weirdDAC;
- end;
- end;
- end;
-
- dactocomm;
- outp($3c6,oldcommreg); {restore command register}
- end;
- dactopel;
- outp($3c6,oldpelreg); {restore PEL register}
- end;
- end;
-
- This rutine identifies:
-
-
- Sierra "Mark1" as Sierra 32K
-
- Sierra "Mark2" is misidentified as Sierra 64k (Mark3).
-
- Sierra "Mark3" as Sierra 64k.
-
- ATT20C491/492 as ATT
-
- SS2410 as SS24
-